Solved: Programmatically Create Content fragments and vari...

您所在的位置:网站首页 create content Solved: Programmatically Create Content fragments and vari...

Solved: Programmatically Create Content fragments and vari...

2024-07-11 19:26| 来源: 网络整理| 查看: 265

I have created the content fragment and content fragment variants programmatically based on the data present in the map.

 

public static void createVariations(ResourceResolver resourceResolver, String variationTitle,Map variationData, String fragmentTitle, String pagePath, SlingHttpServletResponse response)throws ContentFragmentException, IOException, ParseException {Resource fragmentResource = resourceResolver.getResource(CFM_ROOT_PATH + "/" + lowerCaseConverter(fragmentTitle));if (null != fragmentResource) {ContentFragment cfm = fragmentResource.adaptTo(ContentFragment.class);Iterator variations = cfm.listAllVariations();boolean variationExists = false;while (variations.hasNext()) {VariationDef variation = variations.next(); //if (variation.getName().equals(titleFormater(variationTitle))) {variationExists = true;}}if (!variationExists) {// create the variationcfm.createVariation(titleFormater(variationTitle), variationTitle, "");}Iterator itr = cfm.getElements();while (itr.hasNext()) {ContentElement cfElement = itr.next();ContentVariation cv = cfElement.getVariation(titleFormater(variationTitle));FragmentData fragmentData = cv.getValue();if (cfElement.getName().equals("title")) {fragmentData.setValue(variationData.get("title"));}if (cfElement.getName().equals("href")) {fragmentData.setValue(variationData.get("path"));}if (cfElement.getName().equals("softwareVersion")) {fragmentData.setValue(variationTitle);}if (cfElement.getName().equals("releaseNotes")) {fragmentData.setValue(variationData.get("notesPath"));}if (cfElement.getName().equals("downloadSizeUom")) {fragmentData.setValue(variationData.get("sizeUnit"));}if (cfElement.getName().equals("downloadSize")) {fragmentData.setValue(variationData.get("size"));}if (cfElement.getName().equals("releaseDate")) {if (Objects.nonNull(variationData.get("releaseDate"))) {fragmentData.setValue(variationData.get("releaseDate"));}}if (cfElement.getName().equals("archived")) {fragmentData.setValue(variationData.get("archivedSoftware"));}if (cfElement.getName().equals("category")) {Resource cfResource = cfm.adaptTo(Resource.class);if (Objects.nonNull(cfResource)) {Resource variationResource = cfResource.getChild(JcrConstants.JCR_CONTENT + "/data/" + titleFormater(variationTitle));if (Objects.nonNull(variationResource)) {Node variationNode = variationResource.adaptTo(Node.class);if (Objects.nonNull(variationNode)) {try {//Updating the TagsSet categoryList = new HashSet();if (variationNode.hasProperty("category")) {Value[] categories = variationNode.getProperty("category").getValues();for (Value value : categories) {categoryList.add(value.getString());}}categoryList.add(tagGenerator(variationData.get("pageTags").toString()));fragmentData.setValue(categoryList.toArray());} catch (ValueFormatException e) {log.error("ValueFormatException error {}.", e.getMessage(), e);} catch (PathNotFoundException e) {log.error("PathNotFoundException error {}.", e.getMessage(), e);} catch (RepositoryException e) {log.error("RepositoryException error {}.", e.getMessage(), e);}

}

}

}

}cv.setValue(fragmentData);}}resourceResolver.commit();}



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3